HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
scientifichackers
zproc
Python2018–2018
scientifichackers / zproc

zproc

Process on steroids

2Distinct people
11Mentions
0Explicit recommenders
113GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Process on steroids

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by week11 dated mentions

Observed mentions: 2018-05-02 05:56:09 UTC to 2018-11-11 14:51:44 UTC. Weeks start Monday, UTC.

0123452018-04-30 00:00:00 UTC to 2018-05-07 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 commentsApr 302018-05-07 00:00:00 UTC to 2018-05-14 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-05-14 00:00:00 UTC to 2018-05-21 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-05-21 00:00:00 UTC to 2018-05-28 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-05-28 00:00:00 UTC to 2018-06-04 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-06-04 00:00:00 UTC to 2018-06-11 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-06-11 00:00:00 UTC to 2018-06-18 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2018-06-18 00:00:00 UTC to 2018-06-25 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-06-25 00:00:00 UTC to 2018-07-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-07-02 00:00:00 UTC to 2018-07-09 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-07-09 00:00:00 UTC to 2018-07-16 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-07-16 00:00:00 UTC to 2018-07-23 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-07-23 00:00:00 UTC to 2018-07-30 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-07-30 00:00:00 UTC to 2018-08-06 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJul 302018-08-06 00:00:00 UTC to 2018-08-13 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2018-08-13 00:00:00 UTC to 2018-08-20 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-08-20 00:00:00 UTC to 2018-08-27 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2018-08-27 00:00:00 UTC to 2018-09-03 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-09-03 00:00:00 UTC to 2018-09-10 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-09-10 00:00:00 UTC to 2018-09-17 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-09-17 00:00:00 UTC to 2018-09-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-09-24 00:00:00 UTC to 2018-10-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-10-01 00:00:00 UTC to 2018-10-08 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-10-08 00:00:00 UTC to 2018-10-15 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-10-15 00:00:00 UTC to 2018-10-22 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2018-10-22 00:00:00 UTC to 2018-10-29 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-10-29 00:00:00 UTC to 2018-11-05 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-11-05 00:00:00 UTC to 2018-11-12 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsNov 5

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Apr 302018-04-30 00:00:00 UTC2018-05-07 00:00:00 UTC110
May 72018-05-07 00:00:00 UTC2018-05-14 00:00:00 UTC000
May 142018-05-14 00:00:00 UTC2018-05-21 00:00:00 UTC000
May 212018-05-21 00:00:00 UTC2018-05-28 00:00:00 UTC000
May 282018-05-28 00:00:00 UTC2018-06-04 00:00:00 UTC000
Jun 42018-06-04 00:00:00 UTC2018-06-11 00:00:00 UTC000
Jun 112018-06-11 00:00:00 UTC2018-06-18 00:00:00 UTC101
Jun 182018-06-18 00:00:00 UTC2018-06-25 00:00:00 UTC000
Jun 252018-06-25 00:00:00 UTC2018-07-02 00:00:00 UTC000
Jul 22018-07-02 00:00:00 UTC2018-07-09 00:00:00 UTC000
Jul 92018-07-09 00:00:00 UTC2018-07-16 00:00:00 UTC000
Jul 162018-07-16 00:00:00 UTC2018-07-23 00:00:00 UTC000
Jul 232018-07-23 00:00:00 UTC2018-07-30 00:00:00 UTC000
Jul 302018-07-30 00:00:00 UTC2018-08-06 00:00:00 UTC101
Aug 62018-08-06 00:00:00 UTC2018-08-13 00:00:00 UTC101
Aug 132018-08-13 00:00:00 UTC2018-08-20 00:00:00 UTC000
Aug 202018-08-20 00:00:00 UTC2018-08-27 00:00:00 UTC505
Aug 272018-08-27 00:00:00 UTC2018-09-03 00:00:00 UTC000
Sep 32018-09-03 00:00:00 UTC2018-09-10 00:00:00 UTC000
Sep 102018-09-10 00:00:00 UTC2018-09-17 00:00:00 UTC000
Sep 172018-09-17 00:00:00 UTC2018-09-24 00:00:00 UTC000
Sep 242018-09-24 00:00:00 UTC2018-10-01 00:00:00 UTC000
Oct 12018-10-01 00:00:00 UTC2018-10-08 00:00:00 UTC000
Oct 82018-10-08 00:00:00 UTC2018-10-15 00:00:00 UTC000
Oct 152018-10-15 00:00:00 UTC2018-10-22 00:00:00 UTC101
Oct 222018-10-22 00:00:00 UTC2018-10-29 00:00:00 UTC000
Oct 292018-10-29 00:00:00 UTC2018-11-05 00:00:00 UTC000
Nov 52018-11-05 00:00:00 UTC2018-11-12 00:00:00 UTC101

What Hacker News says

11 sources
It would be really cool to have the sort of Erlang-style processes in python -- where each process is a green process, so don't pay the cost of OS handling stuff, but at the same time you run multiple interpreters so that you still get the benefit of multiple cores [1]. Implementation-wise, this could be made simpler than removing the GIL, if we just fully give up on the concept of shared memory. (This is above my pay-grade, anyone with CPython internals knowledge, please share your thoughts!) I've been trying to build a shared state system over message passing that doesn't use shared memory at all [2], and I have experienced that OS level processes are a high cost to pay, when you try to do things the Erlang way, launching thousands of processes. [1] https://hamidreza-s.github.io/erlang/scheduling/real-time/pr... [2] https://github.com/p
Read the rest
In Die Threads: Python async code [video]
> "high performance" I never claimed it to be performant! "Above all, ZProc is written for safety and the ease of use." (Read here - https://github.com/pycampers/zproc?files=1#faq) > It's not a revolution I totally agree. It's just a better way of doing things zmq already perfected. Like, tell me if you've ever seen a python object that has a `dict` API, but does message passing in the background. > central (pubsub?) server. Central server, yes. It uses PUB-SUB for state watching and REQ-REP for everything else. > you've just "discovered" message-passing Guess you're right? 2 years is a peanut on the time scale... P.S. Thanks for all the feedback, I've been dying to hear something for a while now.
In Parallel Programming with Python
> deal with serialization and communication I thought a lot about this problem, for over 2 years, and came up with zproc https://github.com/pycampers/zproc Basically, > It lets you do message passing parallelism without the effort of tedious wiring. You'll be doing message passing without ever dealing with sockets! Also, Shared memory parallelism is hard to get right irregardless of which language you use. I would recommend strongly against it, unless you're writing some really really really niche thing where message passing is a bottleneck (it isn't most of the time)
In Parallel Programming with Python
Threads are not hard. In fact, threads are extremely easy to implement. However, real Threading code is just incredibly difficult to reason, just by looking at it. This makes it easy for you to introduce race conditions without even knowing that there is one! There is also the fact that locks don't lock anything! They are just a flag, that a any code may choose to ignore. They are a not an enforcing tool, just a cooperative one. (More here: https://www.youtube.com/watch?v=9zinZmE3Ogk) P.S. I created a library, that makes it easier to write safer multiprocessing code https://github.com/pycampers/zproc
In Why Threads Are a Bad Idea (1995) [pdf]

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.