Python多进程共享全局变量

当我们使用multiprocessing时,可能会发现进程之间不共享全局变量。

问题示例:

让我们来看一个问题的例子,有两个输入列表,两个进程从中读取并将其附加到最终列表,然后将合并的列表打印输出。

import multiprocessing
final_list = []

input_list_one = ['a', 'b', 'c', 'd']
input_list_two = ['e', 'f', 'g']

def worker(data):
    for item in data:
        final_list.append(item)

process1 = multiprocessing.Process(target=worker, args=[final_list_one])
process2 = multiprocessing.Process(target=worker, args=[final_list_two])

process1.start()
process2.start()
process1.join()
process2.join()

print(final_list)

运行代码时:

$ python3 mp_list_issue.py
[]

如大家所看到的,输出列表为空。

解决方案:

我们需要使用multiprocessing.Manager.List。

摘自Python文档:</

如果你想使用JDBC连接开启了SSLOracle数据库,并将JKS文件位置和密码拼在JDBC URL上,可以按照以下步骤: 1. 获取JKS文件的位置和密码。 2. 在JDBC连接字符串中指定SSL相关的参数。可以使用以下参数: - oracle.net.ssl_cipher_suites:指定SSL加密套件。可以使用逗号分隔的加密套件列表。例如: ``` oracle.net.ssl_cipher_suites=TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA ``` - oracle.net.ssl_version:指定SSL协议版本。可以使用SSLv3、TLSv1、TLSv1.1、TLSv1.2等版本。例如: ``` oracle.net.ssl_version=TLSv1.2 ``` - oracle.net.ssl_server_dn_match:指定SSL的服务器证书的主机名。例如: ``` oracle.net.ssl_server_dn_match=true ``` - oracle.net.ssl_keystore_location:指定JKS文件的位置。例如: ``` oracle.net.ssl_keystore_location=/path/to/keystore.jks ``` - oracle.net.ssl_keystore_password:指定JKS文件的密码。例如: ``` oracle.net.ssl_keystore_password=changeit ``` 将这些参数拼接在JDBC连接字符串中,例如: ``` jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=myhost)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=myorcldbservicename))(SECURITY=(SSL_SERVER_CERT_DN="CN=myhost.com,OU=MyOrgUnit,O=MyOrg,L=MyCity,ST=MyState,C=MyCountry")(SSL_CIPHER_SUITES=(SSL_RSA_WITH_AES_256_CBC_SHA))(SSL_VERSION=TLSv1.2))(SOURCE_ROUTE=yes)(ENABLE=BROKEN)(oracle.net.ssl_keystore_location=/path/to/keystore.jks)(oracle.net.ssl_keystore_password=changeit) ``` 其中,myhost是Oracle数据库的主机名,2484是SSL端口号,myorcldbservicename是Oracle服务名,SSL_SERVER_CERT_DN是SSL服务器证书的主机名,SSL_CIPHER_SUITES是SSL加密套件,SSL_VERSION是SSL协议版本,oracle.net.ssl_keystore_location是JKS文件的位置,oracle.net.ssl_keystore_password是JKS文件的密码。 注意,以上是样例,实际使用时需要修改为自己的配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值