我有以下几个在多个消费者之间共享的类(使用生产者/消费者方法).我的问题涉及这个类上调用的方法.我需要实现锁定还是经理类线程安全?
import multiprocessing as mp
from multiprocessing.manager import BaseManager
class SampleClass(object):
def __init__(self):
self._count = 0
# Does locking need to be implemented here?
def increment(self):
self._count += 1
BaseManager.register('SampleClass', SampleClass)
manager = BaseManager()
manager.start()
instance = manager.SampleClass()
jobs = []
for i in range(0, 5):
p = mp.Process(target=some_func, args=(instance,))
jobs.append(p)
p.start()
for p in jobs:
p.join()
Run Code Online (Sandbox Code Playgroud) >>> import ast
>>> string = '[Small, Medium, Large, X-Large]'
>>> print string
[Small, Medium, Large, X-Large]
>>> string = ast.literal_eval(string)
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
string = ast.literal_eval(string)
File "C:\Python27\lib\ast.py", line 80, in literal_eval
return _convert(node_or_string)
File "C:\Python27\lib\ast.py", line 60, in _convert
return list(map(_convert, node.elts))
File "C:\Python27\lib\ast.py", line 79, in _convert
raise ValueError('malformed string')
ValueError: malformed string
Run Code Online (Sandbox Code Playgroud)
怎么修?
import sqlite3
conn = sqlite3.connect('sample.db')
cursor = conn.cursor()
data = cursor.execute('''SELECT * From Table''')
for i in data:
title = i[0]
status = i[1]
cursor.execute('''UPDATED Table SET status=? WHERE title=?''', (status, title))
cursor.close()
conn.commit()
Run Code Online (Sandbox Code Playgroud)
我正在尝试更新多次迭代.但是,一旦数据库进行第一次更新,脚本就会跳出循环.如何解决这个问题?谢谢!