{"id":10655,"date":"2026-01-15T12:50:59","date_gmt":"2026-01-15T11:50:59","guid":{"rendered":"https:\/\/www.credativ.de\/?p=10655"},"modified":"2026-01-15T12:50:59","modified_gmt":"2026-01-15T11:50:59","slug":"intenumvalue-a-multiprocessing-safe-enum-value-for-python","status":"publish","type":"post","link":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/","title":{"rendered":"IntEnumValue &mdash; A multiprocessing safe enum value for Python"},"content":{"rendered":"<p>Announcing the initial release of the <a href=\"https:\/\/github.com\/credativ\/python-multiprocessing-intenum\" target=\"_blank\" rel=\"noopener\">python-multiprocessing-intenum<\/a> module, providing a multiprocessing safe enum value for the Python programming language.<\/p>\n<h2>Background<\/h2>\n<p>Within a large customer project involving multiple components running in a Kubernetes environment, we faced a specific problem with no generic solution available when implementing a daemon worker component.<br \/>\nAs only one calculation can be running at a time, the component has an internal state to track whether it is idle and ready to accept new calculations, busy calculating or pending to shut itself down, e.g. during a rolling upgrade.<br \/>\nBesides the actual calculation process that is being spawned, the component provides a Django Rest Framework based API from multiple web server processes or threads that allows another scheduler component to query the current state of the worker and submit new calculation jobs. Thus the internal state needs to be safely accessed and modified from multiple processes and\/or threads.<\/p>\n<p>The natural data type to track a state in most high level programming languages including Python is a enum type that one can assign symbolic names corresponding to the states. When it comes to sharing data across multiple processes or threads in Python, the <a href=\"https:\/\/docs.python.org\/3\/library\/multiprocessing.html\" target=\"_blank\" rel=\"noopener\"><code>multiprocessing<\/code><\/a> module comes into play, which provides shared <a href=\"https:\/\/docs.python.org\/3\/library\/ctypes.html\" target=\"_blank\" rel=\"noopener\"><code>ctypes<\/code><\/a> objects, ie. basic data types such as character and integer, as well as locking primitives to handle sharing larger complex data structures.<br \/>\nIt does not provide a ready to use way to share an enum value though.<\/p>\n<p>The problem being pretty common, it called for a generic and reusable solution and so the idea for <a href=\"https:\/\/github.com\/credativ\/python-multiprocessing-intenum\" target=\"_blank\" rel=\"noopener\"><code>IntEnumValue<\/code><\/a> was born, an implementation of a multiprocessing safe shared object for <a href=\"https:\/\/docs.python.org\/3\/library\/enum.html#enum.IntEnum\" target=\"_blank\" rel=\"noopener\"><code>IntEnum<\/code><\/a> enum values.<\/p>\n<h2>Features<\/h2>\n<p>To the user it appears and can be used much like a Python <a href=\"https:\/\/docs.python.org\/3\/library\/enum.html#enum.IntEnum\" target=\"_blank\" rel=\"noopener\"><code>IntEnum<\/code><\/a>, which happens to be an enum, whose named values each correspond to an unique integer.<br \/>\nInternally, it then uses a <a href=\"https:\/\/docs.python.org\/3\/library\/multiprocessing.html#multiprocessing.Value\" target=\"_blank\" rel=\"noopener\"><code>multiprocessing.Value<\/code><\/a> shared <a href=\"https:\/\/docs.python.org\/3\/library\/ctypes.html\" target=\"_blank\" rel=\"noopener\"><code>ctypes<\/code><\/a> integer object to store that integer value of the enum in a multiprocessing safe way.<\/p>\n<p>To support a coding style that proactively guards against programming errors, the module is fully <a href=\"https:\/\/docs.python.org\/3\/library\/typing.html\" target=\"_blank\" rel=\"noopener\">typed<\/a> allowing static checking with <a href=\"https:\/\/mypy-lang.org\/\" target=\"_blank\" rel=\"noopener\"><code>mypy<\/code><\/a> and implemented as a <a href=\"https:\/\/typing.python.org\/en\/latest\/reference\/generics.html\" target=\"_blank\" rel=\"noopener\">generic class<\/a> taking the type of the designated underlying specific enum as a parameter.<\/p>\n<p>The <a href=\"https:\/\/github.com\/credativ\/python-multiprocessing-intenum\" target=\"_blank\" rel=\"noopener\">python-multiprocessing-intenum<\/a> module comes with unit tests providing full coverage of its code.<\/p>\n<h2>Usage Examples<\/h2>\n<p>To illustrate the usage and better demonstrate the features, an example of a multithreaded worker is used, which has an internal state represented as an enum that should be tracked across its threads.<\/p>\n<p>To use a multiprocessing safe <a href=\"https:\/\/docs.python.org\/3\/library\/enum.html#enum.IntEnum\" target=\"_blank\" rel=\"noopener\"><code>IntEnum<\/code><\/a>, first define the actual underlying <a href=\"https:\/\/docs.python.org\/3\/library\/enum.html#enum.IntEnum\" target=\"_blank\" rel=\"noopener\"><code>IntEnum<\/code><\/a> type:<\/p>\n<pre>class WorkerStatusEnum(IntEnum):\r\n    UNAVAILABLE = enum.auto()\r\n    IDLE = enum.auto()\r\n    CALCULATING = enum.auto()\r\n<\/pre>\n<p><a href=\"https:\/\/github.com\/credativ\/python-multiprocessing-intenum\" target=\"_blank\" rel=\"noopener\"><code>IntEnumValue<\/code><\/a> is a <a href=\"https:\/\/typing.python.org\/en\/latest\/reference\/generics.html\" target=\"_blank\" rel=\"noopener\">generic class<\/a>, accepting a type parameter for the type of the underlying <a href=\"https:\/\/docs.python.org\/3\/library\/enum.html#enum.IntEnum\" target=\"_blank\" rel=\"noopener\"><code>IntEnum<\/code><\/a>.<br \/>\nThus define the corresponding <a href=\"https:\/\/github.com\/credativ\/python-multiprocessing-intenum\" target=\"_blank\" rel=\"noopener\"><code>IntEnumValue<\/code><\/a> type for that <a href=\"https:\/\/docs.python.org\/3\/library\/enum.html#enum.IntEnum\" target=\"_blank\" rel=\"noopener\"><code>IntEnum<\/code><\/a> like this:<\/p>\n<pre>class WorkerStatus(IntEnumValue[WorkerStatusEnum]):\r\n    pass\r\n<\/pre>\n<p>What this does, is define a new <code>WorkerStatus<\/code> type that is an <a href=\"https:\/\/github.com\/credativ\/python-multiprocessing-intenum\" target=\"_blank\" rel=\"noopener\"><code>IntEnumValue<\/code><\/a> parametrized to handle the specific <a href=\"https:\/\/docs.python.org\/3\/library\/enum.html#enum.IntEnum\" target=\"_blank\" rel=\"noopener\"><code>IntEnum<\/code><\/a> type <code>WorkerStatusEnum<\/code> only.<br \/>\nIt can be used like an enum to track the state:<\/p>\n<pre>&gt;&gt;&gt; status = WorkerStatus(WorkerStatusEnum.IDLE)\r\n&gt;&gt;&gt; status.name\r\n'IDLE'\r\n&gt;&gt;&gt; status.value\r\n2\r\n&gt;&gt;&gt; with status.get_lock():\r\n...     status.set(WorkerStatusEnum.CALCULATING)\r\n&gt;&gt;&gt; status.name\r\n'CALCULATING'\r\n&gt;&gt;&gt; status.value\r\n3\r\n<\/pre>\n<p>Trying to set it to a different type of <a href=\"https:\/\/docs.python.org\/3\/library\/enum.html#enum.IntEnum\" target=\"_blank\" rel=\"noopener\"><code>IntEnum<\/code><\/a> however is caught as a <code>TypeError<\/code>:<\/p>\n<pre>&gt;&gt;&gt; class FrutEnum(IntEnum):\r\n...     APPLE = enum.auto()\r\n...     ORANGE = enum.auto()\r\n&gt;&gt;&gt; status.set(FrutEnum.APPLE)\r\nTraceback (most recent call last):\r\n  File \"\", line 1, in \r\n  File \"\/home\/elho\/python-multiprocessing-intenum\/src\/multiprocessing_intenum\/__init__.py\", line 60, in set\r\n    raise TypeError(message)\r\nTypeError: Can not set '&lt;enum 'WorkerStatusEnum'&gt;' to value of type '&lt;enum 'FrutEnum'&gt;'\r\n<\/pre>\n<p>This helps to guard against programming errors, where a different enum is erroneously being used.<\/p>\n<p>Besides being used directly, the created <code>WorkerStatus<\/code> type can, of course, also be wrapped in a dedicated class, which is what the remaining examples will further expand on:<\/p>\n<pre>class WorkerState:\r\n    def __init__(self) -&gt; None:\r\n        self.status = WorkerStatus(WorkerStatusEnum.IDLE)\r\n<\/pre>\n<p>When using multiple <a href=\"https:\/\/docs.python.org\/3\/library\/multiprocessing.html#multiprocessing.Value\" target=\"_blank\" rel=\"noopener\"><code>multiprocessing.Value<\/code><\/a> instances (including <a href=\"https:\/\/github.com\/credativ\/python-multiprocessing-intenum\" target=\"_blank\" rel=\"noopener\"><code>IntEnumValue<\/code><\/a> ones) that should share a lock to allow ensuring that they can only be changed in a consistent state, pass that shared lock as a keyword argument on instantiation:<\/p>\n<pre>class WorkerState:\r\n    def __init__(self) -&gt; None:\r\n        self.lock = multiprocessing.RLock()\r\n        self.status = WorkerStatus(WorkerStatusEnum.IDLE, lock=self.lock)\r\n        self.job_id = multiprocessing.Value(\"i\", -1, lock=self.lock)\r\n\r\n    def get_lock(self) -&gt; Lock | RLock:\r\n        return self.lock\r\n<\/pre>\n<p>To avoid having to call the <code>set()<\/code> method to assign a value to the <a href=\"https:\/\/github.com\/credativ\/python-multiprocessing-intenum\" target=\"_blank\" rel=\"noopener\"><code>IntEnumValue<\/code><\/a> attribute, it is suggested to keep the actual attribute private to the class and implement getter and setter methods for a public property that hides this implementation detail, e.g. as follows:<\/p>\n<pre>class WorkerState:\r\n    def __init__(self) -&gt; None:\r\n        self._status = WorkerStatus(WorkerStatusEnum.IDLE)\r\n\r\n    @property\r\n    def status(self) -&gt; WorkerStatusEnum:\r\n        return self._status  # type: ignore[return-value]\r\n\r\n    @status.setter\r\n    def status(self, status: WorkerStatusEnum | str) -&gt; None:\r\n        self._status.set(status)\r\n<\/pre>\n<p>The result can be used in a more elegant manner by simply assigning to the status attribute:<\/p>\n<pre>&gt;&gt;&gt; state = WorkerState()\r\n&gt;&gt;&gt; state.status.name\r\n'IDLE'\r\n&gt;&gt;&gt; with state.get_lock():\r\n...     state.status = WorkerStatusEnum.CALCULATING\r\n&gt;&gt;&gt; state.status.name\r\n'CALCULATING'\r\n<\/pre>\n<p>The specific <a href=\"https:\/\/github.com\/credativ\/python-multiprocessing-intenum\" target=\"_blank\" rel=\"noopener\"><code>IntEnumValue<\/code><\/a> type can override methods to add further functionality.<\/p>\n<p>A common example is overriding the <code>set()<\/code> method to add logging:<\/p>\n<pre>class WorkerStatus(IntEnumValue[WorkerStatusEnum]):\r\n    def set(self, value: WorkerStatusEnum | str) -&gt; None:\r\n        super().set(value)\r\n        logger.info(f\"WorkerStatus set to '{self.name}'\")\r\n<\/pre>\n<p>Putting all these features and use cases together allows handling internal state of multiprocessing worker in an elegant, cohesive and robust way.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Announcing the initial release of the python-multiprocessing-intenum module, providing a multiprocessing safe enum value for the Python programming language. Background Within a large customer project involving multiple components running in a Kubernetes environment, we faced a specific problem with no generic solution available when implementing a daemon worker component. As only one calculation can be [&hellip;]<\/p>\n","protected":false},"author":25,"featured_media":8216,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_improvement_type_select":"improve_an_existing","_thumb_yes_seoaic":false,"_frame_yes_seoaic":false,"seoaic_generate_description":"","seoaic_improve_instructions_prompt":"","seoaic_rollback_content_improvement":"","seoaic_idea_thumbnail_generator":"","thumbnail_generated":false,"thumbnail_generate_prompt":"","seoaic_article_description":"","seoaic_article_subtitles":[],"footnotes":""},"categories":[2194,1703],"tags":[2195],"class_list":["post-10655","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hardcore","category-news","tag-python"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.4 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>IntEnumValue multiprocessing safe enum python lib released - credativ\u00ae<\/title>\n<meta name=\"description\" content=\"IntEnumValue provides a secure enum solution for Python projects. Learn how to boost the performance of your applications.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"IntEnumValue &mdash; A multiprocessing safe enum value for Python\" \/>\n<meta property=\"og:description\" content=\"IntEnumValue provides a secure enum solution for Python projects. Learn how to boost the performance of your applications.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/\" \/>\n<meta property=\"og:site_name\" content=\"credativ\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/credativDE\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-15T11:50:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/neuralnetwork2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Elmar Hoffmann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@credativde\" \/>\n<meta name=\"twitter:site\" content=\"@credativde\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elmar Hoffmann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/\"},\"author\":{\"name\":\"Elmar Hoffmann\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#\\\/schema\\\/person\\\/b895e15e791820849b89cc840587821a\"},\"headline\":\"IntEnumValue &mdash; A multiprocessing safe enum value for Python\",\"datePublished\":\"2026-01-15T11:50:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/\"},\"wordCount\":672,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/neuralnetwork2.jpg\",\"keywords\":[\"Python\"],\"articleSection\":[\"Hardcore\",\"News\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/\",\"name\":\"IntEnumValue multiprocessing safe enum python lib released - credativ\u00ae\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/neuralnetwork2.jpg\",\"datePublished\":\"2026-01-15T11:50:59+00:00\",\"description\":\"IntEnumValue provides a secure enum solution for Python projects. Learn how to boost the performance of your applications.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/neuralnetwork2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/neuralnetwork2.jpg\",\"width\":1024,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"IntEnumValue &mdash; A multiprocessing safe enum value for Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/\",\"name\":\"credativ GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Organization\",\"Place\"],\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#organization\",\"name\":\"credativ\u00ae\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/\",\"logo\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/#local-main-organization-logo\"},\"image\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/#local-main-organization-logo\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/credativDE\\\/\",\"https:\\\/\\\/x.com\\\/credativde\",\"https:\\\/\\\/mastodon.social\\\/@credativde\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/credativ-gmbh\",\"https:\\\/\\\/www.instagram.com\\\/credativ\\\/\"],\"description\":\"Die credativ GmbH ist ein f\u00fchrendes, auf Open Source Software spezialisiertes IT-Dienstleistungs- und Beratungsunternehmen. Wir bieten umfassende und professionelle Services, von Beratung und Infrastruktur-Betrieb \u00fcber 24\\\/7 Support bis hin zu individuellen L\u00f6sungen und Schulungen. Unser Fokus liegt auf dem ganzheitlichen Management von gesch\u00e4ftskritischen Open-Source-Systemen, darunter Betriebssysteme (z.B. Linux), Datenbanken (z.B. PostgreSQL), Konfigurationsmanagement (z.B. Ansible, Puppet) und Virtualisierung. Als engagierter Teil der Open-Source-Community unterst\u00fctzen wir unsere Kunden dabei, die Vorteile freier Software sicher, stabil und effizient in ihrer IT-Umgebung zu nutzen.\",\"legalName\":\"credativ GmbH\",\"foundingDate\":\"2025-03-01\",\"duns\":\"316387060\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"11\",\"maxValue\":\"50\"},\"address\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/#local-main-place-address\"},\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":\"51.1732374\",\"longitude\":\"6.392010099999999\"},\"telephone\":[\"+4921619174200\",\"08002733284\"],\"contactPoint\":{\"@type\":\"ContactPoint\",\"telephone\":\"08002733284\",\"email\":\"vertrieb@credativ.de\"},\"openingHoursSpecification\":[{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\"],\"opens\":\"09:00\",\"closes\":\"17:00\"},{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Saturday\",\"Sunday\"],\"opens\":\"00:00\",\"closes\":\"00:00\"}],\"email\":\"info@credativ.de\",\"areaServed\":\"D-A-CH\",\"vatID\":\"DE452151696\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#\\\/schema\\\/person\\\/b895e15e791820849b89cc840587821a\",\"name\":\"Elmar Hoffmann\"},{\"@type\":\"PostalAddress\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/#local-main-place-address\",\"streetAddress\":\"Hennes-Weisweiler-Allee 23\",\"addressLocality\":\"M\u00f6nchengladbach\",\"postalCode\":\"41179\",\"addressRegion\":\"Deutschland\",\"addressCountry\":\"DE\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/hardcore\\\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\\\/#local-main-organization-logo\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/credativ-logo-right.svg\",\"contentUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/credativ-logo-right.svg\",\"caption\":\"credativ\u00ae\"}]}<\/script>\n<meta name=\"geo.placename\" content=\"M\u00f6nchengladbach\" \/>\n<meta name=\"geo.position\" content=\"51.1732374;6.392010099999999\" \/>\n<meta name=\"geo.region\" content=\"Germany\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"IntEnumValue multiprocessing safe enum python lib released - credativ\u00ae","description":"IntEnumValue provides a secure enum solution for Python projects. Learn how to boost the performance of your applications.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/","og_locale":"en_US","og_type":"article","og_title":"IntEnumValue &mdash; A multiprocessing safe enum value for Python","og_description":"IntEnumValue provides a secure enum solution for Python projects. Learn how to boost the performance of your applications.","og_url":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/","og_site_name":"credativ\u00ae","article_publisher":"https:\/\/www.facebook.com\/credativDE\/","article_published_time":"2026-01-15T11:50:59+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/neuralnetwork2.jpg","type":"image\/jpeg"}],"author":"Elmar Hoffmann","twitter_card":"summary_large_image","twitter_creator":"@credativde","twitter_site":"@credativde","twitter_misc":{"Written by":"Elmar Hoffmann","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/#article","isPartOf":{"@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/"},"author":{"name":"Elmar Hoffmann","@id":"https:\/\/www.credativ.de\/en\/#\/schema\/person\/b895e15e791820849b89cc840587821a"},"headline":"IntEnumValue &mdash; A multiprocessing safe enum value for Python","datePublished":"2026-01-15T11:50:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/"},"wordCount":672,"commentCount":0,"publisher":{"@id":"https:\/\/www.credativ.de\/en\/#organization"},"image":{"@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/neuralnetwork2.jpg","keywords":["Python"],"articleSection":["Hardcore","News"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/www.credativ.de\/#organization"}},{"@type":"WebPage","@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/","url":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/","name":"IntEnumValue multiprocessing safe enum python lib released - credativ\u00ae","isPartOf":{"@id":"https:\/\/www.credativ.de\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/#primaryimage"},"image":{"@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/neuralnetwork2.jpg","datePublished":"2026-01-15T11:50:59+00:00","description":"IntEnumValue provides a secure enum solution for Python projects. Learn how to boost the performance of your applications.","breadcrumb":{"@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/#primaryimage","url":"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/neuralnetwork2.jpg","contentUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/neuralnetwork2.jpg","width":1024,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.credativ.de\/en\/"},{"@type":"ListItem","position":2,"name":"IntEnumValue &mdash; A multiprocessing safe enum value for Python"}]},{"@type":"WebSite","@id":"https:\/\/www.credativ.de\/en\/#website","url":"https:\/\/www.credativ.de\/en\/","name":"credativ GmbH","description":"","publisher":{"@id":"https:\/\/www.credativ.de\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.credativ.de\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Organization","Place"],"@id":"https:\/\/www.credativ.de\/en\/#organization","name":"credativ\u00ae","url":"https:\/\/www.credativ.de\/en\/","logo":{"@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/#local-main-organization-logo"},"image":{"@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/#local-main-organization-logo"},"sameAs":["https:\/\/www.facebook.com\/credativDE\/","https:\/\/x.com\/credativde","https:\/\/mastodon.social\/@credativde","https:\/\/www.linkedin.com\/company\/credativ-gmbh","https:\/\/www.instagram.com\/credativ\/"],"description":"Die credativ GmbH ist ein f\u00fchrendes, auf Open Source Software spezialisiertes IT-Dienstleistungs- und Beratungsunternehmen. Wir bieten umfassende und professionelle Services, von Beratung und Infrastruktur-Betrieb \u00fcber 24\/7 Support bis hin zu individuellen L\u00f6sungen und Schulungen. Unser Fokus liegt auf dem ganzheitlichen Management von gesch\u00e4ftskritischen Open-Source-Systemen, darunter Betriebssysteme (z.B. Linux), Datenbanken (z.B. PostgreSQL), Konfigurationsmanagement (z.B. Ansible, Puppet) und Virtualisierung. Als engagierter Teil der Open-Source-Community unterst\u00fctzen wir unsere Kunden dabei, die Vorteile freier Software sicher, stabil und effizient in ihrer IT-Umgebung zu nutzen.","legalName":"credativ GmbH","foundingDate":"2025-03-01","duns":"316387060","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"11","maxValue":"50"},"address":{"@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/#local-main-place-address"},"geo":{"@type":"GeoCoordinates","latitude":"51.1732374","longitude":"6.392010099999999"},"telephone":["+4921619174200","08002733284"],"contactPoint":{"@type":"ContactPoint","telephone":"08002733284","email":"vertrieb@credativ.de"},"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday"],"opens":"09:00","closes":"17:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":["Saturday","Sunday"],"opens":"00:00","closes":"00:00"}],"email":"info@credativ.de","areaServed":"D-A-CH","vatID":"DE452151696"},{"@type":"Person","@id":"https:\/\/www.credativ.de\/en\/#\/schema\/person\/b895e15e791820849b89cc840587821a","name":"Elmar Hoffmann"},{"@type":"PostalAddress","@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/#local-main-place-address","streetAddress":"Hennes-Weisweiler-Allee 23","addressLocality":"M\u00f6nchengladbach","postalCode":"41179","addressRegion":"Deutschland","addressCountry":"DE"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.credativ.de\/en\/blog\/hardcore\/intenumvalue-a-multiprocessing-safe-enum-value-for-python\/#local-main-organization-logo","url":"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/04\/credativ-logo-right.svg","contentUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/04\/credativ-logo-right.svg","caption":"credativ\u00ae"}]},"geo.placename":"M\u00f6nchengladbach","geo.position":{"lat":"51.1732374","long":"6.392010099999999"},"geo.region":"Germany"},"_links":{"self":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts\/10655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/comments?post=10655"}],"version-history":[{"count":14,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts\/10655\/revisions"}],"predecessor-version":[{"id":10867,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts\/10655\/revisions\/10867"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/media\/8216"}],"wp:attachment":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/media?parent=10655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/categories?post=10655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/tags?post=10655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}