小编Aar*_*len的帖子

Python多处理管理器类对象线程/进程安全

我有以下几个在多个消费者之间共享的类(使用生产者/消费者方法).我的问题涉及这个类上调用的方法.我需要实现锁定还是经理类线程安全?

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)

python thread-safety multiprocessing

7
推荐指数
1
解决办法
341
查看次数

4
推荐指数
1
解决办法
9342
查看次数

用于列出ast.listeral_eval的python字符串列表

>>> 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)

怎么修?

python

3
推荐指数
2
解决办法
5788
查看次数

用于循环更新的python sqlite3

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)

我正在尝试更新多次迭代.但是,一旦数据库进行第一次更新,脚本就会跳出循环.如何解决这个问题?谢谢!

python

2
推荐指数
1
解决办法
4191
查看次数

标签 统计

python ×4

multiprocessing ×1

regex ×1

thread-safety ×1