更新:
由于主线程和后台线程在同一个程序和共享内存。您可以使用一个字典来存储变量及其键创建容器:
import random
mystorage = {}
def getint(value):
while True:
key = random.randint(0, 0xffffffff)
if key in mystorage:
continue
mystorage[key] = value
return key
def getvalue(key):
return mystorage.get(key)
您可能需要如果键冲突根据您的情况进行测试时加写锁。但通常这对多线程程序很好。
只是一个主意,用int
(实际上long
)类型传递任何picklable对象:
import codecs
import pickle
def dumps(payload):
data = pickle.dumps(payload)
return int(codecs.encode(data, 'hex'), 16)
def loads(intval):
data = codecs.decode(hex(intval)[2:].encode('ascii'), 'hex')
return pickle.loads(data)
assert loads(dumps({'foo': 'bar'})) == {'foo': 'bar'}
# no error
如果您正在使用Python 3.2+,您还可以使用int.from_bytes()
和int.to_bytes()
实现这一目标。
你是否也可以通过'long'作为参数? –
文档说int,但我测试了很长时间它的工作。 使用long而不是int会有什么好处? 无论如何感谢您花时间回答 – graphos
您可以使用列表:'a = [10]; B = [12];打印b [0]; B = A;打印b [0];一个[0] = 8; '' –