В качестве упражнения я хотел бы перенести некоторые функции потоковой программы на C (используя pthreads) на Python.Портирование потоковой программы на Python
Программа C запускает поток для (почти) непрерывной итерации по определенным каталогам, заполняя структуру данных своим содержимым; эти каталоги часто меняются с ума (это почтовая очередь).
Основная часть программы реагирует на содержимое этой структуры данных различными способами.
Из того, что я читал, у Python возникают проблемы с параллелизмом.
Могу ли я это реализовать?
Если да, есть ли у вас какие-либо советы?
Я только недавно начал использовать Python регулярно, и я люблю его.
FYI, исходный код напоминает это:
// big struct for everything
struct context_t {
struct datastruct_t data;
pthread_t my_thread;
pthread_mutex_t my_mutex;
}
int thread_control;
// does the dirty work
void *thread_func(void *arg) {
while (thread_control == TH_RUNNABLE) {
// loop through dirs
// fill up ctx->data
sleep(1);
}
pthread_mutex_unlock (my_mutex);
thread_control = TH_STOPPED;
pthread_exit(NULL);
}
int start_thread(struct context_t* ctx) {
// get a mutex to control access to our data
pthread_mutex_trylock(&ctx->my_mutex)
thread_control = TH_RUNNABLE;
// start the thread
pthread_create (&ctx->my_thread, NULL, thread_func, ctx);
}
int stop_thread() {
thread_control = TH_STOPRQ;
}
int main() {
struct context_t *ctx;
start_thread(ctx);
// do stuff
}
Спасибо !!!
Thanks Vanza; Я был обеспокоен GIL, но зная, что единственным ограничением является многоядерность, очень полезно. – mikewaters