Python 线程安全变量

Python 线程安全变量,python,multithreading,pandas,multiprocessing,Python,Multithreading,Pandas,Multiprocessing,我意识到在这种情况下使用多处理模块会更好,但我正在一个服务器上工作,在这个服务器上添加模块需要几天时间(我不是管理员),我更希望早点开始工作 我有一些不是线程安全的代码,如果可能的话,我正试图找出如何使其线程安全。(下面的代码)当我不使用线程时,本地设计的模块可以工作 import sys, threading from school.school_func import run_school_report from class.class_func import run_class_repor

我意识到在这种情况下使用多处理模块会更好,但我正在一个服务器上工作,在这个服务器上添加模块需要几天时间(我不是管理员),我更希望早点开始工作

我有一些不是线程安全的代码,如果可能的话,我正试图找出如何使其线程安全。(下面的代码)当我不使用线程时,本地设计的模块可以工作

import sys, threading
from school.school_func import run_school_report
from class.class_func import run_class_report
from common.getdata import get_data         #locally designed module
import pandas as pd

class myThread (threading.Thread):
    def __init__(self, task, year, month, c1, c2, data):
        threading.Thread.__init__(self)
        self.task = task
        self.year = year
        self.month = month
        self.class1= c1
        self.class2= c2
        self.data = data
    def run(self):
        if self.task == "school_report":
            run_school_report(self.year, self.month, self.class1, self.class2, self.data)
            print("\nSchool report finished! \n")
        else:
            run_class_report(self.year, self.month, self.class1, self.class2)
            print("\nClass reports finished!\n")

#main script
YEAR = 2017
MONTH = 3
C1, C2, DATA = get_data('mysql', reload=False, blacklist=True)
t1 = myThread("school_report", YEAR, MONTH, C1, C2, DATA)
t2 = myThread("class_reports", YEAR, MONTH, C1, C2, DATA)
t1.start()
t2.start()
t1.join()
t2.join()
print("NOTICE:\nAll tasks successfully completed!\n\n")
变量C1、C2、数据和分配其值的类变量是
pandas.DataFrame
对象

我的问题是:

1) 是否可以使此代码线程安全


2) 我应该咬紧牙关使用多处理吗?

多处理是python的核心模块,如果您有
线程
,那么您也有
多处理
,除非您正在运行一些特定的python版本,其中一些核心模块已被专门删除?

多处理
是一个核心python模块,如果你有
threading
,你也有
multiprocessing
,除非你运行的是一些特殊的python版本,其中一些核心模块被专门删除了?嗯,我对python很陌生,很明显,但看起来你是对的。也许是我拼错了。太尴尬了。别担心,我会加上评论作为答案,这样你就可以接受它了,问题就不会被回答了。